package main

import (
	"flag"
	"fmt"
)

// https://juejin.cn/post/7098245145744965663
// flag - 这里采用的是最早的编程语义，就是开关（其实应该是旗语）
// flag解析遇到non-flag参数就停止了
// 如果我们将non-flag参数放在最前面，flag什么也不会解析，因为flag遇到了这个就停止解析了。
func main() {
	args := flag.Args()
	f := flag.String("f", "etc/user.yaml", "config for user")
	u := flag.String("u", "admin", "username")
	p := flag.String("p", "123456", "password")
	x := flag.Bool("x", true, "enable x mode")
	flag.Parse() //

	fmt.Println("non-flag参数个数:", len(args))
	fmt.Println(flag.NArg()) //flag参数被处理之后，还剩余的参数个数
	for i, j := range args {
		fmt.Printf("第%s个non-flag参数:%s\n", i, j)
	}

	//fmt.Println(args[0])
	//fmt.Println(args[1])
	fmt.Println("f:", *f)
	fmt.Println("u:", *u)
	fmt.Println("p:", *p)
	fmt.Println("x:", *x)

}
